본문으로 건너뛰기

05.16 일지

🎯 Fragment LifeCycle 공부 2

: 다른 Fragment로 변경되는 상황에서 기존 Fragment View가 유지돼서 돌아왔을 때 View가 겹쳐서 보이는 문제핸들링을 위해서

참고: https://developer.android.com/guide/fragments/lifecycle


State & callback Flow

[[ STATE - (callback ) → STATE ]]

INITIALIZED - ( onCreate() ) → CREATE


백 스택

: LifeCycle을 이해하기 위해 필요한 개념
작업 사용자가 특정 작업을 할 때 상호작용하는 활동의 컬렉션
활동 백 스택에 순서대로 정렬되는 단위

keypoint: 스택의 맨 윗 활동이 포커싱 == 가장 최근의 활동 1개만 처리
나머지 활동들은 맥락을 유지한채 중지, 다시 포커싱을 받으면 실행

* 활동이 여러 번 인스턴스화될 수 있다 : 둘 이상의 활동으로부터 특정 활동을 시작하도록 허용하면
😀 ⇒ 문제해결을 위한 포인트!

현재 상황
Navigating 하고 돌아올 때 스택의 구조 - [ Fragment New | 다른 페이지 | Fragment Old ]로 유지가 되어 중첩되어 화면에 뜨게 되는 것

😀 ⇒ Navigating 할 때, Fragment Old를 pop한 후 Navigate하기

작업관리 방식을 이용해서, 활동이 시작될 때 백 스택의 맨 위에 새 인스턴스가 생성되는 대신 활동의 기존 인스턴스가 앞으로 나오도록 할 수 있다고 한다..

https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko#ManagingTasks


🎯 새로운 문제

: Navigation으로 다른 Fragment로 화면이동을 했다가 다시 돌아올 때, 백 스택에 새 Fragment 인스턴스를 생성하는 대신 기존에 있던 인스턴스를 백 스택의 앞으로 나올 수 있게 하기


⇒ 구체화된 질문을 chatGPT에 물어봤다.
in navigation graph XML <action />

app:popUpTo="@id/homeFragment"
app:popUpToInclusive="true"

를 통해서 백 스택 앞으로 나오게 정의

😞 ⇒ 실패